@@ -13,6 +13,7 @@ from TimeConvert import TimeConvert as tc |
||
13 | 13 |
from maintenance.models import ExpressCompanyInfo, MaintenaceInfo |
14 | 14 |
from utils.admin_utils import is_admin, is_maintenanceman |
15 | 15 |
from utils.error.errno_utils import MaintenanceStatusCode |
16 |
+from utils.kuaidi.subscribe import KuaiDi100 as KuaiDi100Subscribe |
|
16 | 17 |
from utils.kuaidi.synquery import KuaiDi100 |
17 | 18 |
|
18 | 19 |
|
@@ -55,6 +56,8 @@ def maintenance_add(request): |
||
55 | 56 |
maintenance_status_at={maintenance_status: tc.utc_datetime()} |
56 | 57 |
) |
57 | 58 |
|
59 |
+ maintenance_tracking_info_subscribe(maintenance, 'tracking') |
|
60 |
+ |
|
58 | 61 |
return response(data={ |
59 | 62 |
'maintenance_id': maintenance.id, |
60 | 63 |
}) |
@@ -107,6 +110,9 @@ def maintenance_update(request): |
||
107 | 110 |
if user_id != maintenance.user_id and not is_admin(brand_id, admin_id): |
108 | 111 |
return response(MaintenanceStatusCode.MAINTENACE_PERMISSION_DENIED) |
109 | 112 |
|
113 |
+ old_tracking_number = maintenance.tracking_number |
|
114 |
+ old_back_tracking_number = maintenance.back_tracking_number |
|
115 |
+ |
|
110 | 116 |
if name: |
111 | 117 |
maintenance.name = name |
112 | 118 |
if phone: |
@@ -146,6 +152,11 @@ def maintenance_update(request): |
||
146 | 152 |
maintenance.maintenance_status_at = maintenance_status_at |
147 | 153 |
maintenance.save() |
148 | 154 |
|
155 |
+ if tracking_number and tracking_number != old_tracking_number: |
|
156 |
+ maintenance_tracking_info_subscribe(maintenance, 'tracking') |
|
157 |
+ if back_tracking_number and back_tracking_number != old_back_tracking_number: |
|
158 |
+ maintenance_tracking_info_subscribe(maintenance, 'back_tracking') |
|
159 |
+ |
|
149 | 160 |
return response() |
150 | 161 |
|
151 | 162 |
|
@@ -232,3 +243,25 @@ def maintenance_tracking_info(request): |
||
232 | 243 |
'type': type_, |
233 | 244 |
'tracking_info': tracking_info, |
234 | 245 |
}) |
246 |
+ |
|
247 |
+ |
|
248 |
+def maintenance_tracking_info_subscribe(maintenance, type_): |
|
249 |
+ callbackurl = '{}/maintenance/tracking/info/callback?maintenance_id={}&type={}'.format(settings.DOMAIN, maintenance.pk, type_) |
|
250 |
+ if type_ == 'tracking': |
|
251 |
+ express_com = maintenance.express_com |
|
252 |
+ tracking_number = maintenance.tracking_number |
|
253 |
+ phone = maintenance.phone |
|
254 |
+ else: |
|
255 |
+ express_com = maintenance.back_express_com |
|
256 |
+ tracking_number = maintenance.back_tracking_number |
|
257 |
+ phone = maintenance.phone |
|
258 |
+ res = KuaiDi100Subscribe().submit(express_com, tracking_number, phone=phone, callbackurl=callbackurl) |
|
259 |
+ print(res) |
|
260 |
+ |
|
261 |
+ |
|
262 |
+@logit |
|
263 |
+def maintenance_tracking_info_callback(request): |
|
264 |
+ maintenance_id = request.GET.get('maintenance_id', '') |
|
265 |
+ type_ = request.GET.get('type', 'tracking') # tracking / back_tracking |
|
266 |
+ |
|
267 |
+ return response() |
@@ -279,4 +279,5 @@ urlpatterns += [ |
||
279 | 279 |
url(r'^admin/maintenance/list$', maintenance_views.maintenance_list, name='maintenance_list'), |
280 | 280 |
|
281 | 281 |
url(r'^maintenance/tracking/info$', maintenance_views.maintenance_tracking_info, name='maintenance_tracking_info'), |
282 |
+ url(r'^maintenance/tracking/info/callback$', maintenance_views.maintenance_tracking_info_callback, name='maintenance_tracking_info_callback'), |
|
282 | 283 |
] |
@@ -3,14 +3,15 @@ |
||
3 | 3 |
import json |
4 | 4 |
|
5 | 5 |
import requests |
6 |
+from django.conf import settings |
|
6 | 7 |
|
7 | 8 |
|
8 | 9 |
class KuaiDi100: |
9 | 10 |
def __init__(self): |
10 |
- self.key = '' # TODO 客户授权key |
|
11 |
+ self.key = settings.KUAIDI00.get('key', '') # TODO 客户授权key |
|
11 | 12 |
self.url = 'https://poll.kuaidi100.com/poll' # 请求地址 |
12 | 13 |
|
13 |
- def submit(self, com, num, phone, ship_from, ship_to): |
|
14 |
+ def submit(self, com, num, phone=None, ship_from=None, ship_to=None, callbackurl=None): |
|
14 | 15 |
""" |
15 | 16 |
物流轨迹订阅 |
16 | 17 |
:param com: 快递公司编码 |
@@ -27,7 +28,8 @@ class KuaiDi100: |
||
27 | 28 |
'to': ship_to, |
28 | 29 |
'key': self.key, |
29 | 30 |
'parameters': { |
30 |
- 'callbackurl': 'https://www.baidu.com/kd100/callback', # 回调接口的地址。如果需要在推送信息回传自己业务参数,可以在回调地址URL后面拼接上去,例如:https://www.baidu.com/kd100/callback?orderId=123 |
|
31 |
+ 'callbackurl': callbackurl, |
|
32 |
+ # 'callbackurl': 'https://www.baidu.com/kd100/callback', # 回调接口的地址。如果需要在推送信息回传自己业务参数,可以在回调地址URL后面拼接上去,例如:https://www.baidu.com/kd100/callback?orderId=123 |
|
31 | 33 |
'salt': None, # 签名用随机字符串。32位自定义字符串。添加该参数,则推送的时候会增加sign给贵司校验消息的可靠性 |
32 | 34 |
'resultv2': '1', # 添加此字段表示开通行政区域解析功能。0:关闭(默认),1:开通行政区域解析功能 |
33 | 35 |
'autoCom': '0', # 添加此字段且将此值设为1,则表示开始智能判断单号所属公司的功能,开启后,company字段可为空,即只传运单号(number字段),我方收到后会根据单号判断出其所属的快递公司(即company字段)。建议只有在无法知道单号对应的快递公司(即company的值)的情况下才开启此功能 |
@@ -48,5 +50,5 @@ class KuaiDi100: |
||
48 | 50 |
return requests.post(self.url, req_params).text # 发送请求 |
49 | 51 |
|
50 | 52 |
|
51 |
-result = KuaiDi100().submit('yuantong', 'YT9693083639795', '', '江门市', '深圳市') |
|
52 |
-print(result) |
|
53 |
+# result = KuaiDi100().submit('yuantong', 'YT9693083639795', '', '江门市', '深圳市') |
|
54 |
+# print(result) |